{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import keras \n",
    "import tensorflow as tf\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from statsmodels.tsa.ar_model import AR\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import math\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense\n",
    "from keras.layers import LSTM\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "from sklearn.metrics import mean_squared_error"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Calculate Log Returns from Midprice data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "stock1 = 'FB'\n",
    "stock2 = 'GOOG'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "data = pd.read_csv('tech_stock_data.csv')\n",
    "data = data.loc[0:23399,] # get 1 day"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def regress(returns1,returns2):\n",
    "    x = np.asarray(returns1).reshape(-1,1)\n",
    "    y = np.asarray(returns2).reshape(-1,1)\n",
    "    model = LinearRegression()\n",
    "    model.fit(x,y)\n",
    "    a = model.intercept_[0]\n",
    "    b = model.coef_[0,0]\n",
    "    residuals = y-model.predict(x)\n",
    "    return residuals, a,b\n",
    "\n",
    "def returns(midprices):\n",
    "    return np.diff(midprices, axis=-1)/midprices[:-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "l1 = list(data[stock1])\n",
    "l2 = list(data[stock2])\n",
    "dataset = regress(l1,l2)[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Split into Train/Val/Test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(15678, 2340, 5382)\n"
     ]
    }
   ],
   "source": [
    "# split into train and test sets\n",
    "train_size = int(len(dataset) * 0.67)\n",
    "val_size = int(len(dataset) * 0.10)\n",
    "test_size = len(dataset) - train_size - val_size\n",
    "\n",
    "train, val, test = dataset[0:train_size,:],dataset[train_size:train_size+val_size,:],  dataset[train_size+val_size:len(dataset),:]\n",
    "print(len(train), len(val), len(test))\n",
    "\n",
    "# convert an array of values into a dataset matrix\n",
    "def create_dataset(dataset, look_back=10):\n",
    "    dataX, dataY = [], []\n",
    "    for i in range(len(dataset)-look_back-1):\n",
    "        a = dataset[i:(i+look_back), 0]\n",
    "        dataX.append(a)\n",
    "        dataY.append(dataset[i + look_back, 0])\n",
    "    return np.array(dataX), np.array(dataY)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# reshape into X=t and Y=t+1\n",
    "look_back = 10\n",
    "trainX, trainY = create_dataset(train, look_back)\n",
    "valX, valY = create_dataset(val, look_back)\n",
    "testX, testY = create_dataset(test, look_back)\n",
    "\n",
    "# reshape input to be [samples, time steps, features]\n",
    "trainX = np.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))\n",
    "testX = np.reshape(testX, (testX.shape[0], 1, testX.shape[1]))\n",
    "valX = np.reshape(valX, (valX.shape[0], 1, valX.shape[1]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# RNN architecture"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 15667 samples, validate on 2329 samples\n",
      "Epoch 1/25\n",
      " - 1s - loss: 0.1299 - val_loss: 0.0072\n",
      "Epoch 2/25\n",
      " - 0s - loss: 0.0134 - val_loss: 0.0057\n",
      "Epoch 3/25\n",
      " - 0s - loss: 0.0098 - val_loss: 0.0048\n",
      "Epoch 4/25\n",
      " - 0s - loss: 0.0080 - val_loss: 0.0043\n",
      "Epoch 5/25\n",
      " - 0s - loss: 0.0071 - val_loss: 0.0039\n",
      "Epoch 6/25\n",
      " - 0s - loss: 0.0065 - val_loss: 0.0036\n",
      "Epoch 7/25\n",
      " - 0s - loss: 0.0059 - val_loss: 0.0033\n",
      "Epoch 8/25\n",
      " - 0s - loss: 0.0054 - val_loss: 0.0031\n",
      "Epoch 9/25\n",
      " - 0s - loss: 0.0049 - val_loss: 0.0028\n",
      "Epoch 10/25\n",
      " - 0s - loss: 0.0045 - val_loss: 0.0027\n",
      "Epoch 11/25\n",
      " - 0s - loss: 0.0042 - val_loss: 0.0025\n",
      "Epoch 12/25\n",
      " - 0s - loss: 0.0039 - val_loss: 0.0024\n",
      "Epoch 13/25\n",
      " - 0s - loss: 0.0037 - val_loss: 0.0023\n",
      "Epoch 14/25\n",
      " - 0s - loss: 0.0036 - val_loss: 0.0023\n",
      "Epoch 15/25\n",
      " - 0s - loss: 0.0035 - val_loss: 0.0022\n",
      "Epoch 16/25\n",
      " - 0s - loss: 0.0033 - val_loss: 0.0021\n",
      "Epoch 17/25\n",
      " - 0s - loss: 0.0033 - val_loss: 0.0021\n",
      "Epoch 18/25\n",
      " - 0s - loss: 0.0032 - val_loss: 0.0021\n",
      "Epoch 19/25\n",
      " - 0s - loss: 0.0031 - val_loss: 0.0020\n",
      "Epoch 20/25\n",
      " - 0s - loss: 0.0031 - val_loss: 0.0020\n",
      "Epoch 21/25\n",
      " - 0s - loss: 0.0030 - val_loss: 0.0020\n",
      "Epoch 22/25\n",
      " - 0s - loss: 0.0030 - val_loss: 0.0020\n",
      "Epoch 23/25\n",
      " - 0s - loss: 0.0029 - val_loss: 0.0019\n",
      "Epoch 24/25\n",
      " - 0s - loss: 0.0029 - val_loss: 0.0019\n",
      "Epoch 25/25\n",
      " - 0s - loss: 0.0029 - val_loss: 0.0019\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.History at 0x7f424ccb3ad0>"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create and fit the LSTM network\n",
    "model = Sequential()\n",
    "model.add(LSTM(25, input_shape=(1, look_back)))\n",
    "model.add(Dense(1))\n",
    "model.compile(loss='mean_squared_error', optimizer='adam')\n",
    "model.fit(trainX, trainY, validation_data=([valX, valY]), epochs=25, batch_size=128, verbose=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train MSE: 0.00281413402904\n",
      "Val MSE: 0.00190058531745\n",
      "Test MSE: 0.00198767835095\n"
     ]
    }
   ],
   "source": [
    "# make predictions\n",
    "import sklearn\n",
    "testPredict = model.predict(testX)\n",
    "test_mse = sklearn.metrics.mean_squared_error(testY, testPredict)\n",
    "train_mse = sklearn.metrics.mean_squared_error(trainY, model.predict(trainX))\n",
    "val_mse = sklearn.metrics.mean_squared_error(valY, model.predict(valX))\n",
    "\n",
    "print('Train MSE: {}'.format(train_mse))\n",
    "print('Val MSE: {}'.format(val_mse))\n",
    "print('Test MSE: {}'.format(test_mse))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.38952255],\n",
       "       [-0.34877542],\n",
       "       [-0.3363887 ],\n",
       "       ...,\n",
       "       [-1.9237403 ],\n",
       "       [-1.8996367 ],\n",
       "       [-1.8669881 ]], dtype=float32)"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "testPredict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f424c4616d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(testPredict)\n",
    "plt.plot(testY)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.38952255],\n",
       "       [-0.34877542],\n",
       "       [-0.3363887 ],\n",
       "       ...,\n",
       "       [-1.9237403 ],\n",
       "       [-1.8996367 ],\n",
       "       [-1.8669881 ]], dtype=float32)"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "testPredict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([-0.32628809, -0.32628809, -0.4680379 , ..., -1.90978771,\n",
       "       -1.88066261, -1.89153752])"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "testY"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
